/*
 * MIT License
 *
 * Copyright (c) 2023 OrdinaryRoad
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: douyin.proto

// Protobuf Java Version: 3.25.3
package tech.ordinaryroad.live.chat.client.codec.douyin.protobuf;

/**
 * Protobuf type {@code EffectConfig}
 */
public final class EffectConfig extends
    com.google.protobuf.GeneratedMessageV3 implements
    // @@protoc_insertion_point(message_implements:EffectConfig)
    EffectConfigOrBuilder {
private static final long serialVersionUID = 0L;
  // Use EffectConfig.newBuilder() to construct.
  private EffectConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    super(builder);
  }
  private EffectConfig() {
    flexSettingArrayList_ = emptyLongList();
    textFlexSettingArrayList_ = emptyLongList();
    dressId_ = "";
  }

  @Override
  @SuppressWarnings({"unused"})
  protected Object newInstance(
      UnusedPrivateParameter unused) {
    return new EffectConfig();
  }

  public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
    return Douyin.internal_static_EffectConfig_descriptor;
  }

  @SuppressWarnings({"rawtypes"})
  @Override
  protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
      int number) {
    switch (number) {
      case 16:
        return internalGetExtraMap();
      default:
        throw new RuntimeException(
            "Invalid map field number: " + number);
    }
  }
  @Override
  protected FieldAccessorTable
      internalGetFieldAccessorTable() {
    return Douyin.internal_static_EffectConfig_fieldAccessorTable
        .ensureFieldAccessorsInitialized(
            EffectConfig.class, Builder.class);
  }

  private int bitField0_;
  public static final int TYPE_FIELD_NUMBER = 1;
  private long type_ = 0L;
  /**
   * <code>uint64 type = 1;</code>
   * @return The type.
   */
  @Override
  public long getType() {
    return type_;
  }

  public static final int ICON_FIELD_NUMBER = 2;
  private Image icon_;
  /**
   * <code>.Image icon = 2;</code>
   * @return Whether the icon field is set.
   */
  @Override
  public boolean hasIcon() {
    return ((bitField0_ & 0x00000001) != 0);
  }
  /**
   * <code>.Image icon = 2;</code>
   * @return The icon.
   */
  @Override
  public Image getIcon() {
    return icon_ == null ? Image.getDefaultInstance() : icon_;
  }
  /**
   * <code>.Image icon = 2;</code>
   */
  @Override
  public ImageOrBuilder getIconOrBuilder() {
    return icon_ == null ? Image.getDefaultInstance() : icon_;
  }

  public static final int AVATARPOS_FIELD_NUMBER = 3;
  private long avatarPos_ = 0L;
  /**
   * <code>uint64 avatarPos = 3;</code>
   * @return The avatarPos.
   */
  @Override
  public long getAvatarPos() {
    return avatarPos_;
  }

  public static final int TEXT_FIELD_NUMBER = 4;
  private Text text_;
  /**
   * <code>.Text text = 4;</code>
   * @return Whether the text field is set.
   */
  @Override
  public boolean hasText() {
    return ((bitField0_ & 0x00000002) != 0);
  }
  /**
   * <code>.Text text = 4;</code>
   * @return The text.
   */
  @Override
  public Text getText() {
    return text_ == null ? Text.getDefaultInstance() : text_;
  }
  /**
   * <code>.Text text = 4;</code>
   */
  @Override
  public TextOrBuilder getTextOrBuilder() {
    return text_ == null ? Text.getDefaultInstance() : text_;
  }

  public static final int TEXTICON_FIELD_NUMBER = 5;
  private Image textIcon_;
  /**
   * <code>.Image textIcon = 5;</code>
   * @return Whether the textIcon field is set.
   */
  @Override
  public boolean hasTextIcon() {
    return ((bitField0_ & 0x00000004) != 0);
  }
  /**
   * <code>.Image textIcon = 5;</code>
   * @return The textIcon.
   */
  @Override
  public Image getTextIcon() {
    return textIcon_ == null ? Image.getDefaultInstance() : textIcon_;
  }
  /**
   * <code>.Image textIcon = 5;</code>
   */
  @Override
  public ImageOrBuilder getTextIconOrBuilder() {
    return textIcon_ == null ? Image.getDefaultInstance() : textIcon_;
  }

  public static final int STAYTIME_FIELD_NUMBER = 6;
  private int stayTime_ = 0;
  /**
   * <code>uint32 stayTime = 6;</code>
   * @return The stayTime.
   */
  @Override
  public int getStayTime() {
    return stayTime_;
  }

  public static final int ANIMASSETID_FIELD_NUMBER = 7;
  private long animAssetId_ = 0L;
  /**
   * <code>uint64 animAssetId = 7;</code>
   * @return The animAssetId.
   */
  @Override
  public long getAnimAssetId() {
    return animAssetId_;
  }

  public static final int BADGE_FIELD_NUMBER = 8;
  private Image badge_;
  /**
   * <code>.Image badge = 8;</code>
   * @return Whether the badge field is set.
   */
  @Override
  public boolean hasBadge() {
    return ((bitField0_ & 0x00000008) != 0);
  }
  /**
   * <code>.Image badge = 8;</code>
   * @return The badge.
   */
  @Override
  public Image getBadge() {
    return badge_ == null ? Image.getDefaultInstance() : badge_;
  }
  /**
   * <code>.Image badge = 8;</code>
   */
  @Override
  public ImageOrBuilder getBadgeOrBuilder() {
    return badge_ == null ? Image.getDefaultInstance() : badge_;
  }

  public static final int FLEXSETTINGARRAYLIST_FIELD_NUMBER = 9;
  @SuppressWarnings("serial")
  private com.google.protobuf.Internal.LongList flexSettingArrayList_ =
      emptyLongList();
  /**
   * <code>repeated uint64 flexSettingArrayList = 9;</code>
   * @return A list containing the flexSettingArrayList.
   */
  @Override
  public java.util.List<Long>
      getFlexSettingArrayListList() {
    return flexSettingArrayList_;
  }
  /**
   * <code>repeated uint64 flexSettingArrayList = 9;</code>
   * @return The count of flexSettingArrayList.
   */
  public int getFlexSettingArrayListCount() {
    return flexSettingArrayList_.size();
  }
  /**
   * <code>repeated uint64 flexSettingArrayList = 9;</code>
   * @param index The index of the element to return.
   * @return The flexSettingArrayList at the given index.
   */
  public long getFlexSettingArrayList(int index) {
    return flexSettingArrayList_.getLong(index);
  }
  private int flexSettingArrayListMemoizedSerializedSize = -1;

  public static final int TEXTICONOVERLAY_FIELD_NUMBER = 10;
  private Image textIconOverlay_;
  /**
   * <code>.Image textIconOverlay = 10;</code>
   * @return Whether the textIconOverlay field is set.
   */
  @Override
  public boolean hasTextIconOverlay() {
    return ((bitField0_ & 0x00000010) != 0);
  }
  /**
   * <code>.Image textIconOverlay = 10;</code>
   * @return The textIconOverlay.
   */
  @Override
  public Image getTextIconOverlay() {
    return textIconOverlay_ == null ? Image.getDefaultInstance() : textIconOverlay_;
  }
  /**
   * <code>.Image textIconOverlay = 10;</code>
   */
  @Override
  public ImageOrBuilder getTextIconOverlayOrBuilder() {
    return textIconOverlay_ == null ? Image.getDefaultInstance() : textIconOverlay_;
  }

  public static final int ANIMATEDBADGE_FIELD_NUMBER = 11;
  private Image animatedBadge_;
  /**
   * <code>.Image animatedBadge = 11;</code>
   * @return Whether the animatedBadge field is set.
   */
  @Override
  public boolean hasAnimatedBadge() {
    return ((bitField0_ & 0x00000020) != 0);
  }
  /**
   * <code>.Image animatedBadge = 11;</code>
   * @return The animatedBadge.
   */
  @Override
  public Image getAnimatedBadge() {
    return animatedBadge_ == null ? Image.getDefaultInstance() : animatedBadge_;
  }
  /**
   * <code>.Image animatedBadge = 11;</code>
   */
  @Override
  public ImageOrBuilder getAnimatedBadgeOrBuilder() {
    return animatedBadge_ == null ? Image.getDefaultInstance() : animatedBadge_;
  }

  public static final int HASSWEEPLIGHT_FIELD_NUMBER = 12;
  private boolean hasSweepLight_ = false;
  /**
   * <code>bool hasSweepLight = 12;</code>
   * @return The hasSweepLight.
   */
  @Override
  public boolean getHasSweepLight() {
    return hasSweepLight_;
  }

  public static final int TEXTFLEXSETTINGARRAYLIST_FIELD_NUMBER = 13;
  @SuppressWarnings("serial")
  private com.google.protobuf.Internal.LongList textFlexSettingArrayList_ =
      emptyLongList();
  /**
   * <code>repeated uint64 textFlexSettingArrayList = 13;</code>
   * @return A list containing the textFlexSettingArrayList.
   */
  @Override
  public java.util.List<Long>
      getTextFlexSettingArrayListList() {
    return textFlexSettingArrayList_;
  }
  /**
   * <code>repeated uint64 textFlexSettingArrayList = 13;</code>
   * @return The count of textFlexSettingArrayList.
   */
  public int getTextFlexSettingArrayListCount() {
    return textFlexSettingArrayList_.size();
  }
  /**
   * <code>repeated uint64 textFlexSettingArrayList = 13;</code>
   * @param index The index of the element to return.
   * @return The textFlexSettingArrayList at the given index.
   */
  public long getTextFlexSettingArrayList(int index) {
    return textFlexSettingArrayList_.getLong(index);
  }
  private int textFlexSettingArrayListMemoizedSerializedSize = -1;

  public static final int CENTERANIMASSETID_FIELD_NUMBER = 14;
  private long centerAnimAssetId_ = 0L;
  /**
   * <code>uint64 centerAnimAssetId = 14;</code>
   * @return The centerAnimAssetId.
   */
  @Override
  public long getCenterAnimAssetId() {
    return centerAnimAssetId_;
  }

  public static final int DYNAMICIMAGE_FIELD_NUMBER = 15;
  private Image dynamicImage_;
  /**
   * <code>.Image dynamicImage = 15;</code>
   * @return Whether the dynamicImage field is set.
   */
  @Override
  public boolean hasDynamicImage() {
    return ((bitField0_ & 0x00000040) != 0);
  }
  /**
   * <code>.Image dynamicImage = 15;</code>
   * @return The dynamicImage.
   */
  @Override
  public Image getDynamicImage() {
    return dynamicImage_ == null ? Image.getDefaultInstance() : dynamicImage_;
  }
  /**
   * <code>.Image dynamicImage = 15;</code>
   */
  @Override
  public ImageOrBuilder getDynamicImageOrBuilder() {
    return dynamicImage_ == null ? Image.getDefaultInstance() : dynamicImage_;
  }

  public static final int EXTRAMAP_FIELD_NUMBER = 16;
  private static final class ExtraMapDefaultEntryHolder {
    static final com.google.protobuf.MapEntry<
        String, String> defaultEntry =
            com.google.protobuf.MapEntry
            .<String, String>newDefaultInstance(
                Douyin.internal_static_EffectConfig_ExtraMapEntry_descriptor,
                com.google.protobuf.WireFormat.FieldType.STRING,
                "",
                com.google.protobuf.WireFormat.FieldType.STRING,
                "");
  }
  @SuppressWarnings("serial")
  private com.google.protobuf.MapField<
      String, String> extraMap_;
  private com.google.protobuf.MapField<String, String>
  internalGetExtraMap() {
    if (extraMap_ == null) {
      return com.google.protobuf.MapField.emptyMapField(
          ExtraMapDefaultEntryHolder.defaultEntry);
    }
    return extraMap_;
  }
  public int getExtraMapCount() {
    return internalGetExtraMap().getMap().size();
  }
  /**
   * <code>map&lt;string, string&gt; extraMap = 16;</code>
   */
  @Override
  public boolean containsExtraMap(
      String key) {
    if (key == null) { throw new NullPointerException("map key"); }
    return internalGetExtraMap().getMap().containsKey(key);
  }
  /**
   * Use {@link #getExtraMapMap()} instead.
   */
  @Override
  @Deprecated
  public java.util.Map<String, String> getExtraMap() {
    return getExtraMapMap();
  }
  /**
   * <code>map&lt;string, string&gt; extraMap = 16;</code>
   */
  @Override
  public java.util.Map<String, String> getExtraMapMap() {
    return internalGetExtraMap().getMap();
  }
  /**
   * <code>map&lt;string, string&gt; extraMap = 16;</code>
   */
  @Override
  public /* nullable */
String getExtraMapOrDefault(
      String key,
      /* nullable */
String defaultValue) {
    if (key == null) { throw new NullPointerException("map key"); }
    java.util.Map<String, String> map =
        internalGetExtraMap().getMap();
    return map.containsKey(key) ? map.get(key) : defaultValue;
  }
  /**
   * <code>map&lt;string, string&gt; extraMap = 16;</code>
   */
  @Override
  public String getExtraMapOrThrow(
      String key) {
    if (key == null) { throw new NullPointerException("map key"); }
    java.util.Map<String, String> map =
        internalGetExtraMap().getMap();
    if (!map.containsKey(key)) {
      throw new IllegalArgumentException();
    }
    return map.get(key);
  }

  public static final int MP4ANIMASSETID_FIELD_NUMBER = 17;
  private long mp4AnimAssetId_ = 0L;
  /**
   * <code>uint64 mp4AnimAssetId = 17;</code>
   * @return The mp4AnimAssetId.
   */
  @Override
  public long getMp4AnimAssetId() {
    return mp4AnimAssetId_;
  }

  public static final int PRIORITY_FIELD_NUMBER = 18;
  private long priority_ = 0L;
  /**
   * <code>uint64 priority = 18;</code>
   * @return The priority.
   */
  @Override
  public long getPriority() {
    return priority_;
  }

  public static final int MAXWAITTIME_FIELD_NUMBER = 19;
  private long maxWaitTime_ = 0L;
  /**
   * <code>uint64 maxWaitTime = 19;</code>
   * @return The maxWaitTime.
   */
  @Override
  public long getMaxWaitTime() {
    return maxWaitTime_;
  }

  public static final int DRESSID_FIELD_NUMBER = 20;
  @SuppressWarnings("serial")
  private volatile Object dressId_ = "";
  /**
   * <code>string dressId = 20;</code>
   * @return The dressId.
   */
  @Override
  public String getDressId() {
    Object ref = dressId_;
    if (ref instanceof String) {
      return (String) ref;
    } else {
      com.google.protobuf.ByteString bs = 
          (com.google.protobuf.ByteString) ref;
      String s = bs.toStringUtf8();
      dressId_ = s;
      return s;
    }
  }
  /**
   * <code>string dressId = 20;</code>
   * @return The bytes for dressId.
   */
  @Override
  public com.google.protobuf.ByteString
      getDressIdBytes() {
    Object ref = dressId_;
    if (ref instanceof String) {
      com.google.protobuf.ByteString b = 
          com.google.protobuf.ByteString.copyFromUtf8(
              (String) ref);
      dressId_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int ALIGNMENT_FIELD_NUMBER = 21;
  private long alignment_ = 0L;
  /**
   * <code>uint64 alignment = 21;</code>
   * @return The alignment.
   */
  @Override
  public long getAlignment() {
    return alignment_;
  }

  public static final int ALIGNMENTOFFSET_FIELD_NUMBER = 22;
  private long alignmentOffset_ = 0L;
  /**
   * <code>uint64 alignmentOffset = 22;</code>
   * @return The alignmentOffset.
   */
  @Override
  public long getAlignmentOffset() {
    return alignmentOffset_;
  }

  private byte memoizedIsInitialized = -1;
  @Override
  public final boolean isInitialized() {
    byte isInitialized = memoizedIsInitialized;
    if (isInitialized == 1) return true;
    if (isInitialized == 0) return false;

    memoizedIsInitialized = 1;
    return true;
  }

  @Override
  public void writeTo(com.google.protobuf.CodedOutputStream output)
                      throws java.io.IOException {
    getSerializedSize();
    if (type_ != 0L) {
      output.writeUInt64(1, type_);
    }
    if (((bitField0_ & 0x00000001) != 0)) {
      output.writeMessage(2, getIcon());
    }
    if (avatarPos_ != 0L) {
      output.writeUInt64(3, avatarPos_);
    }
    if (((bitField0_ & 0x00000002) != 0)) {
      output.writeMessage(4, getText());
    }
    if (((bitField0_ & 0x00000004) != 0)) {
      output.writeMessage(5, getTextIcon());
    }
    if (stayTime_ != 0) {
      output.writeUInt32(6, stayTime_);
    }
    if (animAssetId_ != 0L) {
      output.writeUInt64(7, animAssetId_);
    }
    if (((bitField0_ & 0x00000008) != 0)) {
      output.writeMessage(8, getBadge());
    }
    if (getFlexSettingArrayListList().size() > 0) {
      output.writeUInt32NoTag(74);
      output.writeUInt32NoTag(flexSettingArrayListMemoizedSerializedSize);
    }
    for (int i = 0; i < flexSettingArrayList_.size(); i++) {
      output.writeUInt64NoTag(flexSettingArrayList_.getLong(i));
    }
    if (((bitField0_ & 0x00000010) != 0)) {
      output.writeMessage(10, getTextIconOverlay());
    }
    if (((bitField0_ & 0x00000020) != 0)) {
      output.writeMessage(11, getAnimatedBadge());
    }
    if (hasSweepLight_ != false) {
      output.writeBool(12, hasSweepLight_);
    }
    if (getTextFlexSettingArrayListList().size() > 0) {
      output.writeUInt32NoTag(106);
      output.writeUInt32NoTag(textFlexSettingArrayListMemoizedSerializedSize);
    }
    for (int i = 0; i < textFlexSettingArrayList_.size(); i++) {
      output.writeUInt64NoTag(textFlexSettingArrayList_.getLong(i));
    }
    if (centerAnimAssetId_ != 0L) {
      output.writeUInt64(14, centerAnimAssetId_);
    }
    if (((bitField0_ & 0x00000040) != 0)) {
      output.writeMessage(15, getDynamicImage());
    }
    com.google.protobuf.GeneratedMessageV3
      .serializeStringMapTo(
        output,
        internalGetExtraMap(),
        ExtraMapDefaultEntryHolder.defaultEntry,
        16);
    if (mp4AnimAssetId_ != 0L) {
      output.writeUInt64(17, mp4AnimAssetId_);
    }
    if (priority_ != 0L) {
      output.writeUInt64(18, priority_);
    }
    if (maxWaitTime_ != 0L) {
      output.writeUInt64(19, maxWaitTime_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dressId_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 20, dressId_);
    }
    if (alignment_ != 0L) {
      output.writeUInt64(21, alignment_);
    }
    if (alignmentOffset_ != 0L) {
      output.writeUInt64(22, alignmentOffset_);
    }
    getUnknownFields().writeTo(output);
  }

  @Override
  public int getSerializedSize() {
    int size = memoizedSize;
    if (size != -1) return size;

    size = 0;
    if (type_ != 0L) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt64Size(1, type_);
    }
    if (((bitField0_ & 0x00000001) != 0)) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(2, getIcon());
    }
    if (avatarPos_ != 0L) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt64Size(3, avatarPos_);
    }
    if (((bitField0_ & 0x00000002) != 0)) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(4, getText());
    }
    if (((bitField0_ & 0x00000004) != 0)) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(5, getTextIcon());
    }
    if (stayTime_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(6, stayTime_);
    }
    if (animAssetId_ != 0L) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt64Size(7, animAssetId_);
    }
    if (((bitField0_ & 0x00000008) != 0)) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(8, getBadge());
    }
    {
      int dataSize = 0;
      for (int i = 0; i < flexSettingArrayList_.size(); i++) {
        dataSize += com.google.protobuf.CodedOutputStream
          .computeUInt64SizeNoTag(flexSettingArrayList_.getLong(i));
      }
      size += dataSize;
      if (!getFlexSettingArrayListList().isEmpty()) {
        size += 1;
        size += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(dataSize);
      }
      flexSettingArrayListMemoizedSerializedSize = dataSize;
    }
    if (((bitField0_ & 0x00000010) != 0)) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(10, getTextIconOverlay());
    }
    if (((bitField0_ & 0x00000020) != 0)) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(11, getAnimatedBadge());
    }
    if (hasSweepLight_ != false) {
      size += com.google.protobuf.CodedOutputStream
        .computeBoolSize(12, hasSweepLight_);
    }
    {
      int dataSize = 0;
      for (int i = 0; i < textFlexSettingArrayList_.size(); i++) {
        dataSize += com.google.protobuf.CodedOutputStream
          .computeUInt64SizeNoTag(textFlexSettingArrayList_.getLong(i));
      }
      size += dataSize;
      if (!getTextFlexSettingArrayListList().isEmpty()) {
        size += 1;
        size += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(dataSize);
      }
      textFlexSettingArrayListMemoizedSerializedSize = dataSize;
    }
    if (centerAnimAssetId_ != 0L) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt64Size(14, centerAnimAssetId_);
    }
    if (((bitField0_ & 0x00000040) != 0)) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(15, getDynamicImage());
    }
    for (java.util.Map.Entry<String, String> entry
         : internalGetExtraMap().getMap().entrySet()) {
      com.google.protobuf.MapEntry<String, String>
      extraMap__ = ExtraMapDefaultEntryHolder.defaultEntry.newBuilderForType()
          .setKey(entry.getKey())
          .setValue(entry.getValue())
          .build();
      size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(16, extraMap__);
    }
    if (mp4AnimAssetId_ != 0L) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt64Size(17, mp4AnimAssetId_);
    }
    if (priority_ != 0L) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt64Size(18, priority_);
    }
    if (maxWaitTime_ != 0L) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt64Size(19, maxWaitTime_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dressId_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(20, dressId_);
    }
    if (alignment_ != 0L) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt64Size(21, alignment_);
    }
    if (alignmentOffset_ != 0L) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt64Size(22, alignmentOffset_);
    }
    size += getUnknownFields().getSerializedSize();
    memoizedSize = size;
    return size;
  }

  @Override
  public boolean equals(final Object obj) {
    if (obj == this) {
     return true;
    }
    if (!(obj instanceof EffectConfig)) {
      return super.equals(obj);
    }
    EffectConfig other = (EffectConfig) obj;

    if (getType()
        != other.getType()) return false;
    if (hasIcon() != other.hasIcon()) return false;
    if (hasIcon()) {
      if (!getIcon()
          .equals(other.getIcon())) return false;
    }
    if (getAvatarPos()
        != other.getAvatarPos()) return false;
    if (hasText() != other.hasText()) return false;
    if (hasText()) {
      if (!getText()
          .equals(other.getText())) return false;
    }
    if (hasTextIcon() != other.hasTextIcon()) return false;
    if (hasTextIcon()) {
      if (!getTextIcon()
          .equals(other.getTextIcon())) return false;
    }
    if (getStayTime()
        != other.getStayTime()) return false;
    if (getAnimAssetId()
        != other.getAnimAssetId()) return false;
    if (hasBadge() != other.hasBadge()) return false;
    if (hasBadge()) {
      if (!getBadge()
          .equals(other.getBadge())) return false;
    }
    if (!getFlexSettingArrayListList()
        .equals(other.getFlexSettingArrayListList())) return false;
    if (hasTextIconOverlay() != other.hasTextIconOverlay()) return false;
    if (hasTextIconOverlay()) {
      if (!getTextIconOverlay()
          .equals(other.getTextIconOverlay())) return false;
    }
    if (hasAnimatedBadge() != other.hasAnimatedBadge()) return false;
    if (hasAnimatedBadge()) {
      if (!getAnimatedBadge()
          .equals(other.getAnimatedBadge())) return false;
    }
    if (getHasSweepLight()
        != other.getHasSweepLight()) return false;
    if (!getTextFlexSettingArrayListList()
        .equals(other.getTextFlexSettingArrayListList())) return false;
    if (getCenterAnimAssetId()
        != other.getCenterAnimAssetId()) return false;
    if (hasDynamicImage() != other.hasDynamicImage()) return false;
    if (hasDynamicImage()) {
      if (!getDynamicImage()
          .equals(other.getDynamicImage())) return false;
    }
    if (!internalGetExtraMap().equals(
        other.internalGetExtraMap())) return false;
    if (getMp4AnimAssetId()
        != other.getMp4AnimAssetId()) return false;
    if (getPriority()
        != other.getPriority()) return false;
    if (getMaxWaitTime()
        != other.getMaxWaitTime()) return false;
    if (!getDressId()
        .equals(other.getDressId())) return false;
    if (getAlignment()
        != other.getAlignment()) return false;
    if (getAlignmentOffset()
        != other.getAlignmentOffset()) return false;
    if (!getUnknownFields().equals(other.getUnknownFields())) return false;
    return true;
  }

  @Override
  public int hashCode() {
    if (memoizedHashCode != 0) {
      return memoizedHashCode;
    }
    int hash = 41;
    hash = (19 * hash) + getDescriptor().hashCode();
    hash = (37 * hash) + TYPE_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
        getType());
    if (hasIcon()) {
      hash = (37 * hash) + ICON_FIELD_NUMBER;
      hash = (53 * hash) + getIcon().hashCode();
    }
    hash = (37 * hash) + AVATARPOS_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
        getAvatarPos());
    if (hasText()) {
      hash = (37 * hash) + TEXT_FIELD_NUMBER;
      hash = (53 * hash) + getText().hashCode();
    }
    if (hasTextIcon()) {
      hash = (37 * hash) + TEXTICON_FIELD_NUMBER;
      hash = (53 * hash) + getTextIcon().hashCode();
    }
    hash = (37 * hash) + STAYTIME_FIELD_NUMBER;
    hash = (53 * hash) + getStayTime();
    hash = (37 * hash) + ANIMASSETID_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
        getAnimAssetId());
    if (hasBadge()) {
      hash = (37 * hash) + BADGE_FIELD_NUMBER;
      hash = (53 * hash) + getBadge().hashCode();
    }
    if (getFlexSettingArrayListCount() > 0) {
      hash = (37 * hash) + FLEXSETTINGARRAYLIST_FIELD_NUMBER;
      hash = (53 * hash) + getFlexSettingArrayListList().hashCode();
    }
    if (hasTextIconOverlay()) {
      hash = (37 * hash) + TEXTICONOVERLAY_FIELD_NUMBER;
      hash = (53 * hash) + getTextIconOverlay().hashCode();
    }
    if (hasAnimatedBadge()) {
      hash = (37 * hash) + ANIMATEDBADGE_FIELD_NUMBER;
      hash = (53 * hash) + getAnimatedBadge().hashCode();
    }
    hash = (37 * hash) + HASSWEEPLIGHT_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
        getHasSweepLight());
    if (getTextFlexSettingArrayListCount() > 0) {
      hash = (37 * hash) + TEXTFLEXSETTINGARRAYLIST_FIELD_NUMBER;
      hash = (53 * hash) + getTextFlexSettingArrayListList().hashCode();
    }
    hash = (37 * hash) + CENTERANIMASSETID_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
        getCenterAnimAssetId());
    if (hasDynamicImage()) {
      hash = (37 * hash) + DYNAMICIMAGE_FIELD_NUMBER;
      hash = (53 * hash) + getDynamicImage().hashCode();
    }
    if (!internalGetExtraMap().getMap().isEmpty()) {
      hash = (37 * hash) + EXTRAMAP_FIELD_NUMBER;
      hash = (53 * hash) + internalGetExtraMap().hashCode();
    }
    hash = (37 * hash) + MP4ANIMASSETID_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
        getMp4AnimAssetId());
    hash = (37 * hash) + PRIORITY_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
        getPriority());
    hash = (37 * hash) + MAXWAITTIME_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
        getMaxWaitTime());
    hash = (37 * hash) + DRESSID_FIELD_NUMBER;
    hash = (53 * hash) + getDressId().hashCode();
    hash = (37 * hash) + ALIGNMENT_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
        getAlignment());
    hash = (37 * hash) + ALIGNMENTOFFSET_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
        getAlignmentOffset());
    hash = (29 * hash) + getUnknownFields().hashCode();
    memoizedHashCode = hash;
    return hash;
  }

  public static EffectConfig parseFrom(
      java.nio.ByteBuffer data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static EffectConfig parseFrom(
      java.nio.ByteBuffer data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }
  public static EffectConfig parseFrom(
      com.google.protobuf.ByteString data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static EffectConfig parseFrom(
      com.google.protobuf.ByteString data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }
  public static EffectConfig parseFrom(byte[] data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static EffectConfig parseFrom(
      byte[] data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }
  public static EffectConfig parseFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input);
  }
  public static EffectConfig parseFrom(
      java.io.InputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input, extensionRegistry);
  }

  public static EffectConfig parseDelimitedFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseDelimitedWithIOException(PARSER, input);
  }

  public static EffectConfig parseDelimitedFrom(
      java.io.InputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
  }
  public static EffectConfig parseFrom(
      com.google.protobuf.CodedInputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input);
  }
  public static EffectConfig parseFrom(
      com.google.protobuf.CodedInputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input, extensionRegistry);
  }

  @Override
  public Builder newBuilderForType() { return newBuilder(); }
  public static Builder newBuilder() {
    return DEFAULT_INSTANCE.toBuilder();
  }
  public static Builder newBuilder(EffectConfig prototype) {
    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
  }
  @Override
  public Builder toBuilder() {
    return this == DEFAULT_INSTANCE
        ? new Builder() : new Builder().mergeFrom(this);
  }

  @Override
  protected Builder newBuilderForType(
      BuilderParent parent) {
    Builder builder = new Builder(parent);
    return builder;
  }
  /**
   * Protobuf type {@code EffectConfig}
   */
  public static final class Builder extends
      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
      // @@protoc_insertion_point(builder_implements:EffectConfig)
      EffectConfigOrBuilder {
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return Douyin.internal_static_EffectConfig_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
        int number) {
      switch (number) {
        case 16:
          return internalGetExtraMap();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @SuppressWarnings({"rawtypes"})
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
        int number) {
      switch (number) {
        case 16:
          return internalGetMutableExtraMap();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return Douyin.internal_static_EffectConfig_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              EffectConfig.class, Builder.class);
    }

    // Construct using tech.ordinaryroad.live.chat.client.codec.douyin.protobuf.EffectConfig.newBuilder()
    private Builder() {
      maybeForceBuilderInitialization();
    }

    private Builder(
        BuilderParent parent) {
      super(parent);
      maybeForceBuilderInitialization();
    }
    private void maybeForceBuilderInitialization() {
      if (com.google.protobuf.GeneratedMessageV3
              .alwaysUseFieldBuilders) {
        getIconFieldBuilder();
        getTextFieldBuilder();
        getTextIconFieldBuilder();
        getBadgeFieldBuilder();
        getTextIconOverlayFieldBuilder();
        getAnimatedBadgeFieldBuilder();
        getDynamicImageFieldBuilder();
      }
    }
    @Override
    public Builder clear() {
      super.clear();
      bitField0_ = 0;
      type_ = 0L;
      icon_ = null;
      if (iconBuilder_ != null) {
        iconBuilder_.dispose();
        iconBuilder_ = null;
      }
      avatarPos_ = 0L;
      text_ = null;
      if (textBuilder_ != null) {
        textBuilder_.dispose();
        textBuilder_ = null;
      }
      textIcon_ = null;
      if (textIconBuilder_ != null) {
        textIconBuilder_.dispose();
        textIconBuilder_ = null;
      }
      stayTime_ = 0;
      animAssetId_ = 0L;
      badge_ = null;
      if (badgeBuilder_ != null) {
        badgeBuilder_.dispose();
        badgeBuilder_ = null;
      }
      flexSettingArrayList_ = emptyLongList();
      textIconOverlay_ = null;
      if (textIconOverlayBuilder_ != null) {
        textIconOverlayBuilder_.dispose();
        textIconOverlayBuilder_ = null;
      }
      animatedBadge_ = null;
      if (animatedBadgeBuilder_ != null) {
        animatedBadgeBuilder_.dispose();
        animatedBadgeBuilder_ = null;
      }
      hasSweepLight_ = false;
      textFlexSettingArrayList_ = emptyLongList();
      centerAnimAssetId_ = 0L;
      dynamicImage_ = null;
      if (dynamicImageBuilder_ != null) {
        dynamicImageBuilder_.dispose();
        dynamicImageBuilder_ = null;
      }
      internalGetMutableExtraMap().clear();
      mp4AnimAssetId_ = 0L;
      priority_ = 0L;
      maxWaitTime_ = 0L;
      dressId_ = "";
      alignment_ = 0L;
      alignmentOffset_ = 0L;
      return this;
    }

    @Override
    public com.google.protobuf.Descriptors.Descriptor
        getDescriptorForType() {
      return Douyin.internal_static_EffectConfig_descriptor;
    }

    @Override
    public EffectConfig getDefaultInstanceForType() {
      return EffectConfig.getDefaultInstance();
    }

    @Override
    public EffectConfig build() {
      EffectConfig result = buildPartial();
      if (!result.isInitialized()) {
        throw newUninitializedMessageException(result);
      }
      return result;
    }

    @Override
    public EffectConfig buildPartial() {
      EffectConfig result = new EffectConfig(this);
      if (bitField0_ != 0) { buildPartial0(result); }
      onBuilt();
      return result;
    }

    private void buildPartial0(EffectConfig result) {
      int from_bitField0_ = bitField0_;
      if (((from_bitField0_ & 0x00000001) != 0)) {
        result.type_ = type_;
      }
      int to_bitField0_ = 0;
      if (((from_bitField0_ & 0x00000002) != 0)) {
        result.icon_ = iconBuilder_ == null
            ? icon_
            : iconBuilder_.build();
        to_bitField0_ |= 0x00000001;
      }
      if (((from_bitField0_ & 0x00000004) != 0)) {
        result.avatarPos_ = avatarPos_;
      }
      if (((from_bitField0_ & 0x00000008) != 0)) {
        result.text_ = textBuilder_ == null
            ? text_
            : textBuilder_.build();
        to_bitField0_ |= 0x00000002;
      }
      if (((from_bitField0_ & 0x00000010) != 0)) {
        result.textIcon_ = textIconBuilder_ == null
            ? textIcon_
            : textIconBuilder_.build();
        to_bitField0_ |= 0x00000004;
      }
      if (((from_bitField0_ & 0x00000020) != 0)) {
        result.stayTime_ = stayTime_;
      }
      if (((from_bitField0_ & 0x00000040) != 0)) {
        result.animAssetId_ = animAssetId_;
      }
      if (((from_bitField0_ & 0x00000080) != 0)) {
        result.badge_ = badgeBuilder_ == null
            ? badge_
            : badgeBuilder_.build();
        to_bitField0_ |= 0x00000008;
      }
      if (((from_bitField0_ & 0x00000100) != 0)) {
        flexSettingArrayList_.makeImmutable();
        result.flexSettingArrayList_ = flexSettingArrayList_;
      }
      if (((from_bitField0_ & 0x00000200) != 0)) {
        result.textIconOverlay_ = textIconOverlayBuilder_ == null
            ? textIconOverlay_
            : textIconOverlayBuilder_.build();
        to_bitField0_ |= 0x00000010;
      }
      if (((from_bitField0_ & 0x00000400) != 0)) {
        result.animatedBadge_ = animatedBadgeBuilder_ == null
            ? animatedBadge_
            : animatedBadgeBuilder_.build();
        to_bitField0_ |= 0x00000020;
      }
      if (((from_bitField0_ & 0x00000800) != 0)) {
        result.hasSweepLight_ = hasSweepLight_;
      }
      if (((from_bitField0_ & 0x00001000) != 0)) {
        textFlexSettingArrayList_.makeImmutable();
        result.textFlexSettingArrayList_ = textFlexSettingArrayList_;
      }
      if (((from_bitField0_ & 0x00002000) != 0)) {
        result.centerAnimAssetId_ = centerAnimAssetId_;
      }
      if (((from_bitField0_ & 0x00004000) != 0)) {
        result.dynamicImage_ = dynamicImageBuilder_ == null
            ? dynamicImage_
            : dynamicImageBuilder_.build();
        to_bitField0_ |= 0x00000040;
      }
      if (((from_bitField0_ & 0x00008000) != 0)) {
        result.extraMap_ = internalGetExtraMap();
        result.extraMap_.makeImmutable();
      }
      if (((from_bitField0_ & 0x00010000) != 0)) {
        result.mp4AnimAssetId_ = mp4AnimAssetId_;
      }
      if (((from_bitField0_ & 0x00020000) != 0)) {
        result.priority_ = priority_;
      }
      if (((from_bitField0_ & 0x00040000) != 0)) {
        result.maxWaitTime_ = maxWaitTime_;
      }
      if (((from_bitField0_ & 0x00080000) != 0)) {
        result.dressId_ = dressId_;
      }
      if (((from_bitField0_ & 0x00100000) != 0)) {
        result.alignment_ = alignment_;
      }
      if (((from_bitField0_ & 0x00200000) != 0)) {
        result.alignmentOffset_ = alignmentOffset_;
      }
      result.bitField0_ |= to_bitField0_;
    }

    @Override
    public Builder clone() {
      return super.clone();
    }
    @Override
    public Builder setField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        Object value) {
      return super.setField(field, value);
    }
    @Override
    public Builder clearField(
        com.google.protobuf.Descriptors.FieldDescriptor field) {
      return super.clearField(field);
    }
    @Override
    public Builder clearOneof(
        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
      return super.clearOneof(oneof);
    }
    @Override
    public Builder setRepeatedField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        int index, Object value) {
      return super.setRepeatedField(field, index, value);
    }
    @Override
    public Builder addRepeatedField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        Object value) {
      return super.addRepeatedField(field, value);
    }
    @Override
    public Builder mergeFrom(com.google.protobuf.Message other) {
      if (other instanceof EffectConfig) {
        return mergeFrom((EffectConfig)other);
      } else {
        super.mergeFrom(other);
        return this;
      }
    }

    public Builder mergeFrom(EffectConfig other) {
      if (other == EffectConfig.getDefaultInstance()) return this;
      if (other.getType() != 0L) {
        setType(other.getType());
      }
      if (other.hasIcon()) {
        mergeIcon(other.getIcon());
      }
      if (other.getAvatarPos() != 0L) {
        setAvatarPos(other.getAvatarPos());
      }
      if (other.hasText()) {
        mergeText(other.getText());
      }
      if (other.hasTextIcon()) {
        mergeTextIcon(other.getTextIcon());
      }
      if (other.getStayTime() != 0) {
        setStayTime(other.getStayTime());
      }
      if (other.getAnimAssetId() != 0L) {
        setAnimAssetId(other.getAnimAssetId());
      }
      if (other.hasBadge()) {
        mergeBadge(other.getBadge());
      }
      if (!other.flexSettingArrayList_.isEmpty()) {
        if (flexSettingArrayList_.isEmpty()) {
          flexSettingArrayList_ = other.flexSettingArrayList_;
          flexSettingArrayList_.makeImmutable();
          bitField0_ |= 0x00000100;
        } else {
          ensureFlexSettingArrayListIsMutable();
          flexSettingArrayList_.addAll(other.flexSettingArrayList_);
        }
        onChanged();
      }
      if (other.hasTextIconOverlay()) {
        mergeTextIconOverlay(other.getTextIconOverlay());
      }
      if (other.hasAnimatedBadge()) {
        mergeAnimatedBadge(other.getAnimatedBadge());
      }
      if (other.getHasSweepLight() != false) {
        setHasSweepLight(other.getHasSweepLight());
      }
      if (!other.textFlexSettingArrayList_.isEmpty()) {
        if (textFlexSettingArrayList_.isEmpty()) {
          textFlexSettingArrayList_ = other.textFlexSettingArrayList_;
          textFlexSettingArrayList_.makeImmutable();
          bitField0_ |= 0x00001000;
        } else {
          ensureTextFlexSettingArrayListIsMutable();
          textFlexSettingArrayList_.addAll(other.textFlexSettingArrayList_);
        }
        onChanged();
      }
      if (other.getCenterAnimAssetId() != 0L) {
        setCenterAnimAssetId(other.getCenterAnimAssetId());
      }
      if (other.hasDynamicImage()) {
        mergeDynamicImage(other.getDynamicImage());
      }
      internalGetMutableExtraMap().mergeFrom(
          other.internalGetExtraMap());
      bitField0_ |= 0x00008000;
      if (other.getMp4AnimAssetId() != 0L) {
        setMp4AnimAssetId(other.getMp4AnimAssetId());
      }
      if (other.getPriority() != 0L) {
        setPriority(other.getPriority());
      }
      if (other.getMaxWaitTime() != 0L) {
        setMaxWaitTime(other.getMaxWaitTime());
      }
      if (!other.getDressId().isEmpty()) {
        dressId_ = other.dressId_;
        bitField0_ |= 0x00080000;
        onChanged();
      }
      if (other.getAlignment() != 0L) {
        setAlignment(other.getAlignment());
      }
      if (other.getAlignmentOffset() != 0L) {
        setAlignmentOffset(other.getAlignmentOffset());
      }
      this.mergeUnknownFields(other.getUnknownFields());
      onChanged();
      return this;
    }

    @Override
    public final boolean isInitialized() {
      return true;
    }

    @Override
    public Builder mergeFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {
              type_ = input.readUInt64();
              bitField0_ |= 0x00000001;
              break;
            } // case 8
            case 18: {
              input.readMessage(
                  getIconFieldBuilder().getBuilder(),
                  extensionRegistry);
              bitField0_ |= 0x00000002;
              break;
            } // case 18
            case 24: {
              avatarPos_ = input.readUInt64();
              bitField0_ |= 0x00000004;
              break;
            } // case 24
            case 34: {
              input.readMessage(
                  getTextFieldBuilder().getBuilder(),
                  extensionRegistry);
              bitField0_ |= 0x00000008;
              break;
            } // case 34
            case 42: {
              input.readMessage(
                  getTextIconFieldBuilder().getBuilder(),
                  extensionRegistry);
              bitField0_ |= 0x00000010;
              break;
            } // case 42
            case 48: {
              stayTime_ = input.readUInt32();
              bitField0_ |= 0x00000020;
              break;
            } // case 48
            case 56: {
              animAssetId_ = input.readUInt64();
              bitField0_ |= 0x00000040;
              break;
            } // case 56
            case 66: {
              input.readMessage(
                  getBadgeFieldBuilder().getBuilder(),
                  extensionRegistry);
              bitField0_ |= 0x00000080;
              break;
            } // case 66
            case 72: {
              long v = input.readUInt64();
              ensureFlexSettingArrayListIsMutable();
              flexSettingArrayList_.addLong(v);
              break;
            } // case 72
            case 74: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              ensureFlexSettingArrayListIsMutable();
              while (input.getBytesUntilLimit() > 0) {
                flexSettingArrayList_.addLong(input.readUInt64());
              }
              input.popLimit(limit);
              break;
            } // case 74
            case 82: {
              input.readMessage(
                  getTextIconOverlayFieldBuilder().getBuilder(),
                  extensionRegistry);
              bitField0_ |= 0x00000200;
              break;
            } // case 82
            case 90: {
              input.readMessage(
                  getAnimatedBadgeFieldBuilder().getBuilder(),
                  extensionRegistry);
              bitField0_ |= 0x00000400;
              break;
            } // case 90
            case 96: {
              hasSweepLight_ = input.readBool();
              bitField0_ |= 0x00000800;
              break;
            } // case 96
            case 104: {
              long v = input.readUInt64();
              ensureTextFlexSettingArrayListIsMutable();
              textFlexSettingArrayList_.addLong(v);
              break;
            } // case 104
            case 106: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              ensureTextFlexSettingArrayListIsMutable();
              while (input.getBytesUntilLimit() > 0) {
                textFlexSettingArrayList_.addLong(input.readUInt64());
              }
              input.popLimit(limit);
              break;
            } // case 106
            case 112: {
              centerAnimAssetId_ = input.readUInt64();
              bitField0_ |= 0x00002000;
              break;
            } // case 112
            case 122: {
              input.readMessage(
                  getDynamicImageFieldBuilder().getBuilder(),
                  extensionRegistry);
              bitField0_ |= 0x00004000;
              break;
            } // case 122
            case 130: {
              com.google.protobuf.MapEntry<String, String>
              extraMap__ = input.readMessage(
                  ExtraMapDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
              internalGetMutableExtraMap().getMutableMap().put(
                  extraMap__.getKey(), extraMap__.getValue());
              bitField0_ |= 0x00008000;
              break;
            } // case 130
            case 136: {
              mp4AnimAssetId_ = input.readUInt64();
              bitField0_ |= 0x00010000;
              break;
            } // case 136
            case 144: {
              priority_ = input.readUInt64();
              bitField0_ |= 0x00020000;
              break;
            } // case 144
            case 152: {
              maxWaitTime_ = input.readUInt64();
              bitField0_ |= 0x00040000;
              break;
            } // case 152
            case 162: {
              dressId_ = input.readStringRequireUtf8();
              bitField0_ |= 0x00080000;
              break;
            } // case 162
            case 168: {
              alignment_ = input.readUInt64();
              bitField0_ |= 0x00100000;
              break;
            } // case 168
            case 176: {
              alignmentOffset_ = input.readUInt64();
              bitField0_ |= 0x00200000;
              break;
            } // case 176
            default: {
              if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                done = true; // was an endgroup tag
              }
              break;
            } // default:
          } // switch (tag)
        } // while (!done)
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.unwrapIOException();
      } finally {
        onChanged();
      } // finally
      return this;
    }
    private int bitField0_;

    private long type_ ;
    /**
     * <code>uint64 type = 1;</code>
     * @return The type.
     */
    @Override
    public long getType() {
      return type_;
    }
    /**
     * <code>uint64 type = 1;</code>
     * @param value The type to set.
     * @return This builder for chaining.
     */
    public Builder setType(long value) {

      type_ = value;
      bitField0_ |= 0x00000001;
      onChanged();
      return this;
    }
    /**
     * <code>uint64 type = 1;</code>
     * @return This builder for chaining.
     */
    public Builder clearType() {
      bitField0_ = (bitField0_ & ~0x00000001);
      type_ = 0L;
      onChanged();
      return this;
    }

    private Image icon_;
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder> iconBuilder_;
    /**
     * <code>.Image icon = 2;</code>
     * @return Whether the icon field is set.
     */
    public boolean hasIcon() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>.Image icon = 2;</code>
     * @return The icon.
     */
    public Image getIcon() {
      if (iconBuilder_ == null) {
        return icon_ == null ? Image.getDefaultInstance() : icon_;
      } else {
        return iconBuilder_.getMessage();
      }
    }
    /**
     * <code>.Image icon = 2;</code>
     */
    public Builder setIcon(Image value) {
      if (iconBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        icon_ = value;
      } else {
        iconBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000002;
      onChanged();
      return this;
    }
    /**
     * <code>.Image icon = 2;</code>
     */
    public Builder setIcon(
        Image.Builder builderForValue) {
      if (iconBuilder_ == null) {
        icon_ = builderForValue.build();
      } else {
        iconBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000002;
      onChanged();
      return this;
    }
    /**
     * <code>.Image icon = 2;</code>
     */
    public Builder mergeIcon(Image value) {
      if (iconBuilder_ == null) {
        if (((bitField0_ & 0x00000002) != 0) &&
          icon_ != null &&
          icon_ != Image.getDefaultInstance()) {
          getIconBuilder().mergeFrom(value);
        } else {
          icon_ = value;
        }
      } else {
        iconBuilder_.mergeFrom(value);
      }
      if (icon_ != null) {
        bitField0_ |= 0x00000002;
        onChanged();
      }
      return this;
    }
    /**
     * <code>.Image icon = 2;</code>
     */
    public Builder clearIcon() {
      bitField0_ = (bitField0_ & ~0x00000002);
      icon_ = null;
      if (iconBuilder_ != null) {
        iconBuilder_.dispose();
        iconBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     * <code>.Image icon = 2;</code>
     */
    public Image.Builder getIconBuilder() {
      bitField0_ |= 0x00000002;
      onChanged();
      return getIconFieldBuilder().getBuilder();
    }
    /**
     * <code>.Image icon = 2;</code>
     */
    public ImageOrBuilder getIconOrBuilder() {
      if (iconBuilder_ != null) {
        return iconBuilder_.getMessageOrBuilder();
      } else {
        return icon_ == null ?
            Image.getDefaultInstance() : icon_;
      }
    }
    /**
     * <code>.Image icon = 2;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder>
        getIconFieldBuilder() {
      if (iconBuilder_ == null) {
        iconBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            Image, Image.Builder, ImageOrBuilder>(
                getIcon(),
                getParentForChildren(),
                isClean());
        icon_ = null;
      }
      return iconBuilder_;
    }

    private long avatarPos_ ;
    /**
     * <code>uint64 avatarPos = 3;</code>
     * @return The avatarPos.
     */
    @Override
    public long getAvatarPos() {
      return avatarPos_;
    }
    /**
     * <code>uint64 avatarPos = 3;</code>
     * @param value The avatarPos to set.
     * @return This builder for chaining.
     */
    public Builder setAvatarPos(long value) {

      avatarPos_ = value;
      bitField0_ |= 0x00000004;
      onChanged();
      return this;
    }
    /**
     * <code>uint64 avatarPos = 3;</code>
     * @return This builder for chaining.
     */
    public Builder clearAvatarPos() {
      bitField0_ = (bitField0_ & ~0x00000004);
      avatarPos_ = 0L;
      onChanged();
      return this;
    }

    private Text text_;
    private com.google.protobuf.SingleFieldBuilderV3<
        Text, Text.Builder, TextOrBuilder> textBuilder_;
    /**
     * <code>.Text text = 4;</code>
     * @return Whether the text field is set.
     */
    public boolean hasText() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>.Text text = 4;</code>
     * @return The text.
     */
    public Text getText() {
      if (textBuilder_ == null) {
        return text_ == null ? Text.getDefaultInstance() : text_;
      } else {
        return textBuilder_.getMessage();
      }
    }
    /**
     * <code>.Text text = 4;</code>
     */
    public Builder setText(Text value) {
      if (textBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        text_ = value;
      } else {
        textBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000008;
      onChanged();
      return this;
    }
    /**
     * <code>.Text text = 4;</code>
     */
    public Builder setText(
        Text.Builder builderForValue) {
      if (textBuilder_ == null) {
        text_ = builderForValue.build();
      } else {
        textBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000008;
      onChanged();
      return this;
    }
    /**
     * <code>.Text text = 4;</code>
     */
    public Builder mergeText(Text value) {
      if (textBuilder_ == null) {
        if (((bitField0_ & 0x00000008) != 0) &&
          text_ != null &&
          text_ != Text.getDefaultInstance()) {
          getTextBuilder().mergeFrom(value);
        } else {
          text_ = value;
        }
      } else {
        textBuilder_.mergeFrom(value);
      }
      if (text_ != null) {
        bitField0_ |= 0x00000008;
        onChanged();
      }
      return this;
    }
    /**
     * <code>.Text text = 4;</code>
     */
    public Builder clearText() {
      bitField0_ = (bitField0_ & ~0x00000008);
      text_ = null;
      if (textBuilder_ != null) {
        textBuilder_.dispose();
        textBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     * <code>.Text text = 4;</code>
     */
    public Text.Builder getTextBuilder() {
      bitField0_ |= 0x00000008;
      onChanged();
      return getTextFieldBuilder().getBuilder();
    }
    /**
     * <code>.Text text = 4;</code>
     */
    public TextOrBuilder getTextOrBuilder() {
      if (textBuilder_ != null) {
        return textBuilder_.getMessageOrBuilder();
      } else {
        return text_ == null ?
            Text.getDefaultInstance() : text_;
      }
    }
    /**
     * <code>.Text text = 4;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        Text, Text.Builder, TextOrBuilder>
        getTextFieldBuilder() {
      if (textBuilder_ == null) {
        textBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            Text, Text.Builder, TextOrBuilder>(
                getText(),
                getParentForChildren(),
                isClean());
        text_ = null;
      }
      return textBuilder_;
    }

    private Image textIcon_;
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder> textIconBuilder_;
    /**
     * <code>.Image textIcon = 5;</code>
     * @return Whether the textIcon field is set.
     */
    public boolean hasTextIcon() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>.Image textIcon = 5;</code>
     * @return The textIcon.
     */
    public Image getTextIcon() {
      if (textIconBuilder_ == null) {
        return textIcon_ == null ? Image.getDefaultInstance() : textIcon_;
      } else {
        return textIconBuilder_.getMessage();
      }
    }
    /**
     * <code>.Image textIcon = 5;</code>
     */
    public Builder setTextIcon(Image value) {
      if (textIconBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        textIcon_ = value;
      } else {
        textIconBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000010;
      onChanged();
      return this;
    }
    /**
     * <code>.Image textIcon = 5;</code>
     */
    public Builder setTextIcon(
        Image.Builder builderForValue) {
      if (textIconBuilder_ == null) {
        textIcon_ = builderForValue.build();
      } else {
        textIconBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000010;
      onChanged();
      return this;
    }
    /**
     * <code>.Image textIcon = 5;</code>
     */
    public Builder mergeTextIcon(Image value) {
      if (textIconBuilder_ == null) {
        if (((bitField0_ & 0x00000010) != 0) &&
          textIcon_ != null &&
          textIcon_ != Image.getDefaultInstance()) {
          getTextIconBuilder().mergeFrom(value);
        } else {
          textIcon_ = value;
        }
      } else {
        textIconBuilder_.mergeFrom(value);
      }
      if (textIcon_ != null) {
        bitField0_ |= 0x00000010;
        onChanged();
      }
      return this;
    }
    /**
     * <code>.Image textIcon = 5;</code>
     */
    public Builder clearTextIcon() {
      bitField0_ = (bitField0_ & ~0x00000010);
      textIcon_ = null;
      if (textIconBuilder_ != null) {
        textIconBuilder_.dispose();
        textIconBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     * <code>.Image textIcon = 5;</code>
     */
    public Image.Builder getTextIconBuilder() {
      bitField0_ |= 0x00000010;
      onChanged();
      return getTextIconFieldBuilder().getBuilder();
    }
    /**
     * <code>.Image textIcon = 5;</code>
     */
    public ImageOrBuilder getTextIconOrBuilder() {
      if (textIconBuilder_ != null) {
        return textIconBuilder_.getMessageOrBuilder();
      } else {
        return textIcon_ == null ?
            Image.getDefaultInstance() : textIcon_;
      }
    }
    /**
     * <code>.Image textIcon = 5;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder>
        getTextIconFieldBuilder() {
      if (textIconBuilder_ == null) {
        textIconBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            Image, Image.Builder, ImageOrBuilder>(
                getTextIcon(),
                getParentForChildren(),
                isClean());
        textIcon_ = null;
      }
      return textIconBuilder_;
    }

    private int stayTime_ ;
    /**
     * <code>uint32 stayTime = 6;</code>
     * @return The stayTime.
     */
    @Override
    public int getStayTime() {
      return stayTime_;
    }
    /**
     * <code>uint32 stayTime = 6;</code>
     * @param value The stayTime to set.
     * @return This builder for chaining.
     */
    public Builder setStayTime(int value) {

      stayTime_ = value;
      bitField0_ |= 0x00000020;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 stayTime = 6;</code>
     * @return This builder for chaining.
     */
    public Builder clearStayTime() {
      bitField0_ = (bitField0_ & ~0x00000020);
      stayTime_ = 0;
      onChanged();
      return this;
    }

    private long animAssetId_ ;
    /**
     * <code>uint64 animAssetId = 7;</code>
     * @return The animAssetId.
     */
    @Override
    public long getAnimAssetId() {
      return animAssetId_;
    }
    /**
     * <code>uint64 animAssetId = 7;</code>
     * @param value The animAssetId to set.
     * @return This builder for chaining.
     */
    public Builder setAnimAssetId(long value) {

      animAssetId_ = value;
      bitField0_ |= 0x00000040;
      onChanged();
      return this;
    }
    /**
     * <code>uint64 animAssetId = 7;</code>
     * @return This builder for chaining.
     */
    public Builder clearAnimAssetId() {
      bitField0_ = (bitField0_ & ~0x00000040);
      animAssetId_ = 0L;
      onChanged();
      return this;
    }

    private Image badge_;
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder> badgeBuilder_;
    /**
     * <code>.Image badge = 8;</code>
     * @return Whether the badge field is set.
     */
    public boolean hasBadge() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <code>.Image badge = 8;</code>
     * @return The badge.
     */
    public Image getBadge() {
      if (badgeBuilder_ == null) {
        return badge_ == null ? Image.getDefaultInstance() : badge_;
      } else {
        return badgeBuilder_.getMessage();
      }
    }
    /**
     * <code>.Image badge = 8;</code>
     */
    public Builder setBadge(Image value) {
      if (badgeBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        badge_ = value;
      } else {
        badgeBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000080;
      onChanged();
      return this;
    }
    /**
     * <code>.Image badge = 8;</code>
     */
    public Builder setBadge(
        Image.Builder builderForValue) {
      if (badgeBuilder_ == null) {
        badge_ = builderForValue.build();
      } else {
        badgeBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000080;
      onChanged();
      return this;
    }
    /**
     * <code>.Image badge = 8;</code>
     */
    public Builder mergeBadge(Image value) {
      if (badgeBuilder_ == null) {
        if (((bitField0_ & 0x00000080) != 0) &&
          badge_ != null &&
          badge_ != Image.getDefaultInstance()) {
          getBadgeBuilder().mergeFrom(value);
        } else {
          badge_ = value;
        }
      } else {
        badgeBuilder_.mergeFrom(value);
      }
      if (badge_ != null) {
        bitField0_ |= 0x00000080;
        onChanged();
      }
      return this;
    }
    /**
     * <code>.Image badge = 8;</code>
     */
    public Builder clearBadge() {
      bitField0_ = (bitField0_ & ~0x00000080);
      badge_ = null;
      if (badgeBuilder_ != null) {
        badgeBuilder_.dispose();
        badgeBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     * <code>.Image badge = 8;</code>
     */
    public Image.Builder getBadgeBuilder() {
      bitField0_ |= 0x00000080;
      onChanged();
      return getBadgeFieldBuilder().getBuilder();
    }
    /**
     * <code>.Image badge = 8;</code>
     */
    public ImageOrBuilder getBadgeOrBuilder() {
      if (badgeBuilder_ != null) {
        return badgeBuilder_.getMessageOrBuilder();
      } else {
        return badge_ == null ?
            Image.getDefaultInstance() : badge_;
      }
    }
    /**
     * <code>.Image badge = 8;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder>
        getBadgeFieldBuilder() {
      if (badgeBuilder_ == null) {
        badgeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            Image, Image.Builder, ImageOrBuilder>(
                getBadge(),
                getParentForChildren(),
                isClean());
        badge_ = null;
      }
      return badgeBuilder_;
    }

    private com.google.protobuf.Internal.LongList flexSettingArrayList_ = emptyLongList();
    private void ensureFlexSettingArrayListIsMutable() {
      if (!flexSettingArrayList_.isModifiable()) {
        flexSettingArrayList_ = makeMutableCopy(flexSettingArrayList_);
      }
      bitField0_ |= 0x00000100;
    }
    /**
     * <code>repeated uint64 flexSettingArrayList = 9;</code>
     * @return A list containing the flexSettingArrayList.
     */
    public java.util.List<Long>
        getFlexSettingArrayListList() {
      flexSettingArrayList_.makeImmutable();
      return flexSettingArrayList_;
    }
    /**
     * <code>repeated uint64 flexSettingArrayList = 9;</code>
     * @return The count of flexSettingArrayList.
     */
    public int getFlexSettingArrayListCount() {
      return flexSettingArrayList_.size();
    }
    /**
     * <code>repeated uint64 flexSettingArrayList = 9;</code>
     * @param index The index of the element to return.
     * @return The flexSettingArrayList at the given index.
     */
    public long getFlexSettingArrayList(int index) {
      return flexSettingArrayList_.getLong(index);
    }
    /**
     * <code>repeated uint64 flexSettingArrayList = 9;</code>
     * @param index The index to set the value at.
     * @param value The flexSettingArrayList to set.
     * @return This builder for chaining.
     */
    public Builder setFlexSettingArrayList(
        int index, long value) {

      ensureFlexSettingArrayListIsMutable();
      flexSettingArrayList_.setLong(index, value);
      bitField0_ |= 0x00000100;
      onChanged();
      return this;
    }
    /**
     * <code>repeated uint64 flexSettingArrayList = 9;</code>
     * @param value The flexSettingArrayList to add.
     * @return This builder for chaining.
     */
    public Builder addFlexSettingArrayList(long value) {

      ensureFlexSettingArrayListIsMutable();
      flexSettingArrayList_.addLong(value);
      bitField0_ |= 0x00000100;
      onChanged();
      return this;
    }
    /**
     * <code>repeated uint64 flexSettingArrayList = 9;</code>
     * @param values The flexSettingArrayList to add.
     * @return This builder for chaining.
     */
    public Builder addAllFlexSettingArrayList(
        Iterable<? extends Long> values) {
      ensureFlexSettingArrayListIsMutable();
      com.google.protobuf.AbstractMessageLite.Builder.addAll(
          values, flexSettingArrayList_);
      bitField0_ |= 0x00000100;
      onChanged();
      return this;
    }
    /**
     * <code>repeated uint64 flexSettingArrayList = 9;</code>
     * @return This builder for chaining.
     */
    public Builder clearFlexSettingArrayList() {
      flexSettingArrayList_ = emptyLongList();
      bitField0_ = (bitField0_ & ~0x00000100);
      onChanged();
      return this;
    }

    private Image textIconOverlay_;
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder> textIconOverlayBuilder_;
    /**
     * <code>.Image textIconOverlay = 10;</code>
     * @return Whether the textIconOverlay field is set.
     */
    public boolean hasTextIconOverlay() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <code>.Image textIconOverlay = 10;</code>
     * @return The textIconOverlay.
     */
    public Image getTextIconOverlay() {
      if (textIconOverlayBuilder_ == null) {
        return textIconOverlay_ == null ? Image.getDefaultInstance() : textIconOverlay_;
      } else {
        return textIconOverlayBuilder_.getMessage();
      }
    }
    /**
     * <code>.Image textIconOverlay = 10;</code>
     */
    public Builder setTextIconOverlay(Image value) {
      if (textIconOverlayBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        textIconOverlay_ = value;
      } else {
        textIconOverlayBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000200;
      onChanged();
      return this;
    }
    /**
     * <code>.Image textIconOverlay = 10;</code>
     */
    public Builder setTextIconOverlay(
        Image.Builder builderForValue) {
      if (textIconOverlayBuilder_ == null) {
        textIconOverlay_ = builderForValue.build();
      } else {
        textIconOverlayBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000200;
      onChanged();
      return this;
    }
    /**
     * <code>.Image textIconOverlay = 10;</code>
     */
    public Builder mergeTextIconOverlay(Image value) {
      if (textIconOverlayBuilder_ == null) {
        if (((bitField0_ & 0x00000200) != 0) &&
          textIconOverlay_ != null &&
          textIconOverlay_ != Image.getDefaultInstance()) {
          getTextIconOverlayBuilder().mergeFrom(value);
        } else {
          textIconOverlay_ = value;
        }
      } else {
        textIconOverlayBuilder_.mergeFrom(value);
      }
      if (textIconOverlay_ != null) {
        bitField0_ |= 0x00000200;
        onChanged();
      }
      return this;
    }
    /**
     * <code>.Image textIconOverlay = 10;</code>
     */
    public Builder clearTextIconOverlay() {
      bitField0_ = (bitField0_ & ~0x00000200);
      textIconOverlay_ = null;
      if (textIconOverlayBuilder_ != null) {
        textIconOverlayBuilder_.dispose();
        textIconOverlayBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     * <code>.Image textIconOverlay = 10;</code>
     */
    public Image.Builder getTextIconOverlayBuilder() {
      bitField0_ |= 0x00000200;
      onChanged();
      return getTextIconOverlayFieldBuilder().getBuilder();
    }
    /**
     * <code>.Image textIconOverlay = 10;</code>
     */
    public ImageOrBuilder getTextIconOverlayOrBuilder() {
      if (textIconOverlayBuilder_ != null) {
        return textIconOverlayBuilder_.getMessageOrBuilder();
      } else {
        return textIconOverlay_ == null ?
            Image.getDefaultInstance() : textIconOverlay_;
      }
    }
    /**
     * <code>.Image textIconOverlay = 10;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder>
        getTextIconOverlayFieldBuilder() {
      if (textIconOverlayBuilder_ == null) {
        textIconOverlayBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            Image, Image.Builder, ImageOrBuilder>(
                getTextIconOverlay(),
                getParentForChildren(),
                isClean());
        textIconOverlay_ = null;
      }
      return textIconOverlayBuilder_;
    }

    private Image animatedBadge_;
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder> animatedBadgeBuilder_;
    /**
     * <code>.Image animatedBadge = 11;</code>
     * @return Whether the animatedBadge field is set.
     */
    public boolean hasAnimatedBadge() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     * <code>.Image animatedBadge = 11;</code>
     * @return The animatedBadge.
     */
    public Image getAnimatedBadge() {
      if (animatedBadgeBuilder_ == null) {
        return animatedBadge_ == null ? Image.getDefaultInstance() : animatedBadge_;
      } else {
        return animatedBadgeBuilder_.getMessage();
      }
    }
    /**
     * <code>.Image animatedBadge = 11;</code>
     */
    public Builder setAnimatedBadge(Image value) {
      if (animatedBadgeBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        animatedBadge_ = value;
      } else {
        animatedBadgeBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000400;
      onChanged();
      return this;
    }
    /**
     * <code>.Image animatedBadge = 11;</code>
     */
    public Builder setAnimatedBadge(
        Image.Builder builderForValue) {
      if (animatedBadgeBuilder_ == null) {
        animatedBadge_ = builderForValue.build();
      } else {
        animatedBadgeBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000400;
      onChanged();
      return this;
    }
    /**
     * <code>.Image animatedBadge = 11;</code>
     */
    public Builder mergeAnimatedBadge(Image value) {
      if (animatedBadgeBuilder_ == null) {
        if (((bitField0_ & 0x00000400) != 0) &&
          animatedBadge_ != null &&
          animatedBadge_ != Image.getDefaultInstance()) {
          getAnimatedBadgeBuilder().mergeFrom(value);
        } else {
          animatedBadge_ = value;
        }
      } else {
        animatedBadgeBuilder_.mergeFrom(value);
      }
      if (animatedBadge_ != null) {
        bitField0_ |= 0x00000400;
        onChanged();
      }
      return this;
    }
    /**
     * <code>.Image animatedBadge = 11;</code>
     */
    public Builder clearAnimatedBadge() {
      bitField0_ = (bitField0_ & ~0x00000400);
      animatedBadge_ = null;
      if (animatedBadgeBuilder_ != null) {
        animatedBadgeBuilder_.dispose();
        animatedBadgeBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     * <code>.Image animatedBadge = 11;</code>
     */
    public Image.Builder getAnimatedBadgeBuilder() {
      bitField0_ |= 0x00000400;
      onChanged();
      return getAnimatedBadgeFieldBuilder().getBuilder();
    }
    /**
     * <code>.Image animatedBadge = 11;</code>
     */
    public ImageOrBuilder getAnimatedBadgeOrBuilder() {
      if (animatedBadgeBuilder_ != null) {
        return animatedBadgeBuilder_.getMessageOrBuilder();
      } else {
        return animatedBadge_ == null ?
            Image.getDefaultInstance() : animatedBadge_;
      }
    }
    /**
     * <code>.Image animatedBadge = 11;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder>
        getAnimatedBadgeFieldBuilder() {
      if (animatedBadgeBuilder_ == null) {
        animatedBadgeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            Image, Image.Builder, ImageOrBuilder>(
                getAnimatedBadge(),
                getParentForChildren(),
                isClean());
        animatedBadge_ = null;
      }
      return animatedBadgeBuilder_;
    }

    private boolean hasSweepLight_ ;
    /**
     * <code>bool hasSweepLight = 12;</code>
     * @return The hasSweepLight.
     */
    @Override
    public boolean getHasSweepLight() {
      return hasSweepLight_;
    }
    /**
     * <code>bool hasSweepLight = 12;</code>
     * @param value The hasSweepLight to set.
     * @return This builder for chaining.
     */
    public Builder setHasSweepLight(boolean value) {

      hasSweepLight_ = value;
      bitField0_ |= 0x00000800;
      onChanged();
      return this;
    }
    /**
     * <code>bool hasSweepLight = 12;</code>
     * @return This builder for chaining.
     */
    public Builder clearHasSweepLight() {
      bitField0_ = (bitField0_ & ~0x00000800);
      hasSweepLight_ = false;
      onChanged();
      return this;
    }

    private com.google.protobuf.Internal.LongList textFlexSettingArrayList_ = emptyLongList();
    private void ensureTextFlexSettingArrayListIsMutable() {
      if (!textFlexSettingArrayList_.isModifiable()) {
        textFlexSettingArrayList_ = makeMutableCopy(textFlexSettingArrayList_);
      }
      bitField0_ |= 0x00001000;
    }
    /**
     * <code>repeated uint64 textFlexSettingArrayList = 13;</code>
     * @return A list containing the textFlexSettingArrayList.
     */
    public java.util.List<Long>
        getTextFlexSettingArrayListList() {
      textFlexSettingArrayList_.makeImmutable();
      return textFlexSettingArrayList_;
    }
    /**
     * <code>repeated uint64 textFlexSettingArrayList = 13;</code>
     * @return The count of textFlexSettingArrayList.
     */
    public int getTextFlexSettingArrayListCount() {
      return textFlexSettingArrayList_.size();
    }
    /**
     * <code>repeated uint64 textFlexSettingArrayList = 13;</code>
     * @param index The index of the element to return.
     * @return The textFlexSettingArrayList at the given index.
     */
    public long getTextFlexSettingArrayList(int index) {
      return textFlexSettingArrayList_.getLong(index);
    }
    /**
     * <code>repeated uint64 textFlexSettingArrayList = 13;</code>
     * @param index The index to set the value at.
     * @param value The textFlexSettingArrayList to set.
     * @return This builder for chaining.
     */
    public Builder setTextFlexSettingArrayList(
        int index, long value) {

      ensureTextFlexSettingArrayListIsMutable();
      textFlexSettingArrayList_.setLong(index, value);
      bitField0_ |= 0x00001000;
      onChanged();
      return this;
    }
    /**
     * <code>repeated uint64 textFlexSettingArrayList = 13;</code>
     * @param value The textFlexSettingArrayList to add.
     * @return This builder for chaining.
     */
    public Builder addTextFlexSettingArrayList(long value) {

      ensureTextFlexSettingArrayListIsMutable();
      textFlexSettingArrayList_.addLong(value);
      bitField0_ |= 0x00001000;
      onChanged();
      return this;
    }
    /**
     * <code>repeated uint64 textFlexSettingArrayList = 13;</code>
     * @param values The textFlexSettingArrayList to add.
     * @return This builder for chaining.
     */
    public Builder addAllTextFlexSettingArrayList(
        Iterable<? extends Long> values) {
      ensureTextFlexSettingArrayListIsMutable();
      com.google.protobuf.AbstractMessageLite.Builder.addAll(
          values, textFlexSettingArrayList_);
      bitField0_ |= 0x00001000;
      onChanged();
      return this;
    }
    /**
     * <code>repeated uint64 textFlexSettingArrayList = 13;</code>
     * @return This builder for chaining.
     */
    public Builder clearTextFlexSettingArrayList() {
      textFlexSettingArrayList_ = emptyLongList();
      bitField0_ = (bitField0_ & ~0x00001000);
      onChanged();
      return this;
    }

    private long centerAnimAssetId_ ;
    /**
     * <code>uint64 centerAnimAssetId = 14;</code>
     * @return The centerAnimAssetId.
     */
    @Override
    public long getCenterAnimAssetId() {
      return centerAnimAssetId_;
    }
    /**
     * <code>uint64 centerAnimAssetId = 14;</code>
     * @param value The centerAnimAssetId to set.
     * @return This builder for chaining.
     */
    public Builder setCenterAnimAssetId(long value) {

      centerAnimAssetId_ = value;
      bitField0_ |= 0x00002000;
      onChanged();
      return this;
    }
    /**
     * <code>uint64 centerAnimAssetId = 14;</code>
     * @return This builder for chaining.
     */
    public Builder clearCenterAnimAssetId() {
      bitField0_ = (bitField0_ & ~0x00002000);
      centerAnimAssetId_ = 0L;
      onChanged();
      return this;
    }

    private Image dynamicImage_;
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder> dynamicImageBuilder_;
    /**
     * <code>.Image dynamicImage = 15;</code>
     * @return Whether the dynamicImage field is set.
     */
    public boolean hasDynamicImage() {
      return ((bitField0_ & 0x00004000) != 0);
    }
    /**
     * <code>.Image dynamicImage = 15;</code>
     * @return The dynamicImage.
     */
    public Image getDynamicImage() {
      if (dynamicImageBuilder_ == null) {
        return dynamicImage_ == null ? Image.getDefaultInstance() : dynamicImage_;
      } else {
        return dynamicImageBuilder_.getMessage();
      }
    }
    /**
     * <code>.Image dynamicImage = 15;</code>
     */
    public Builder setDynamicImage(Image value) {
      if (dynamicImageBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        dynamicImage_ = value;
      } else {
        dynamicImageBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00004000;
      onChanged();
      return this;
    }
    /**
     * <code>.Image dynamicImage = 15;</code>
     */
    public Builder setDynamicImage(
        Image.Builder builderForValue) {
      if (dynamicImageBuilder_ == null) {
        dynamicImage_ = builderForValue.build();
      } else {
        dynamicImageBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00004000;
      onChanged();
      return this;
    }
    /**
     * <code>.Image dynamicImage = 15;</code>
     */
    public Builder mergeDynamicImage(Image value) {
      if (dynamicImageBuilder_ == null) {
        if (((bitField0_ & 0x00004000) != 0) &&
          dynamicImage_ != null &&
          dynamicImage_ != Image.getDefaultInstance()) {
          getDynamicImageBuilder().mergeFrom(value);
        } else {
          dynamicImage_ = value;
        }
      } else {
        dynamicImageBuilder_.mergeFrom(value);
      }
      if (dynamicImage_ != null) {
        bitField0_ |= 0x00004000;
        onChanged();
      }
      return this;
    }
    /**
     * <code>.Image dynamicImage = 15;</code>
     */
    public Builder clearDynamicImage() {
      bitField0_ = (bitField0_ & ~0x00004000);
      dynamicImage_ = null;
      if (dynamicImageBuilder_ != null) {
        dynamicImageBuilder_.dispose();
        dynamicImageBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     * <code>.Image dynamicImage = 15;</code>
     */
    public Image.Builder getDynamicImageBuilder() {
      bitField0_ |= 0x00004000;
      onChanged();
      return getDynamicImageFieldBuilder().getBuilder();
    }
    /**
     * <code>.Image dynamicImage = 15;</code>
     */
    public ImageOrBuilder getDynamicImageOrBuilder() {
      if (dynamicImageBuilder_ != null) {
        return dynamicImageBuilder_.getMessageOrBuilder();
      } else {
        return dynamicImage_ == null ?
            Image.getDefaultInstance() : dynamicImage_;
      }
    }
    /**
     * <code>.Image dynamicImage = 15;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder>
        getDynamicImageFieldBuilder() {
      if (dynamicImageBuilder_ == null) {
        dynamicImageBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            Image, Image.Builder, ImageOrBuilder>(
                getDynamicImage(),
                getParentForChildren(),
                isClean());
        dynamicImage_ = null;
      }
      return dynamicImageBuilder_;
    }

    private com.google.protobuf.MapField<
        String, String> extraMap_;
    private com.google.protobuf.MapField<String, String>
        internalGetExtraMap() {
      if (extraMap_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            ExtraMapDefaultEntryHolder.defaultEntry);
      }
      return extraMap_;
    }
    private com.google.protobuf.MapField<String, String>
        internalGetMutableExtraMap() {
      if (extraMap_ == null) {
        extraMap_ = com.google.protobuf.MapField.newMapField(
            ExtraMapDefaultEntryHolder.defaultEntry);
      }
      if (!extraMap_.isMutable()) {
        extraMap_ = extraMap_.copy();
      }
      bitField0_ |= 0x00008000;
      onChanged();
      return extraMap_;
    }
    public int getExtraMapCount() {
      return internalGetExtraMap().getMap().size();
    }
    /**
     * <code>map&lt;string, string&gt; extraMap = 16;</code>
     */
    @Override
    public boolean containsExtraMap(
        String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetExtraMap().getMap().containsKey(key);
    }
    /**
     * Use {@link #getExtraMapMap()} instead.
     */
    @Override
    @Deprecated
    public java.util.Map<String, String> getExtraMap() {
      return getExtraMapMap();
    }
    /**
     * <code>map&lt;string, string&gt; extraMap = 16;</code>
     */
    @Override
    public java.util.Map<String, String> getExtraMapMap() {
      return internalGetExtraMap().getMap();
    }
    /**
     * <code>map&lt;string, string&gt; extraMap = 16;</code>
     */
    @Override
    public /* nullable */
String getExtraMapOrDefault(
        String key,
        /* nullable */
String defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<String, String> map =
          internalGetExtraMap().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <code>map&lt;string, string&gt; extraMap = 16;</code>
     */
    @Override
    public String getExtraMapOrThrow(
        String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<String, String> map =
          internalGetExtraMap().getMap();
      if (!map.containsKey(key)) {
        throw new IllegalArgumentException();
      }
      return map.get(key);
    }
    public Builder clearExtraMap() {
      bitField0_ = (bitField0_ & ~0x00008000);
      internalGetMutableExtraMap().getMutableMap()
          .clear();
      return this;
    }
    /**
     * <code>map&lt;string, string&gt; extraMap = 16;</code>
     */
    public Builder removeExtraMap(
        String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      internalGetMutableExtraMap().getMutableMap()
          .remove(key);
      return this;
    }
    /**
     * Use alternate mutation accessors instead.
     */
    @Deprecated
    public java.util.Map<String, String>
        getMutableExtraMap() {
      bitField0_ |= 0x00008000;
      return internalGetMutableExtraMap().getMutableMap();
    }
    /**
     * <code>map&lt;string, string&gt; extraMap = 16;</code>
     */
    public Builder putExtraMap(
        String key,
        String value) {
      if (key == null) { throw new NullPointerException("map key"); }
      if (value == null) { throw new NullPointerException("map value"); }
      internalGetMutableExtraMap().getMutableMap()
          .put(key, value);
      bitField0_ |= 0x00008000;
      return this;
    }
    /**
     * <code>map&lt;string, string&gt; extraMap = 16;</code>
     */
    public Builder putAllExtraMap(
        java.util.Map<String, String> values) {
      internalGetMutableExtraMap().getMutableMap()
          .putAll(values);
      bitField0_ |= 0x00008000;
      return this;
    }

    private long mp4AnimAssetId_ ;
    /**
     * <code>uint64 mp4AnimAssetId = 17;</code>
     * @return The mp4AnimAssetId.
     */
    @Override
    public long getMp4AnimAssetId() {
      return mp4AnimAssetId_;
    }
    /**
     * <code>uint64 mp4AnimAssetId = 17;</code>
     * @param value The mp4AnimAssetId to set.
     * @return This builder for chaining.
     */
    public Builder setMp4AnimAssetId(long value) {

      mp4AnimAssetId_ = value;
      bitField0_ |= 0x00010000;
      onChanged();
      return this;
    }
    /**
     * <code>uint64 mp4AnimAssetId = 17;</code>
     * @return This builder for chaining.
     */
    public Builder clearMp4AnimAssetId() {
      bitField0_ = (bitField0_ & ~0x00010000);
      mp4AnimAssetId_ = 0L;
      onChanged();
      return this;
    }

    private long priority_ ;
    /**
     * <code>uint64 priority = 18;</code>
     * @return The priority.
     */
    @Override
    public long getPriority() {
      return priority_;
    }
    /**
     * <code>uint64 priority = 18;</code>
     * @param value The priority to set.
     * @return This builder for chaining.
     */
    public Builder setPriority(long value) {

      priority_ = value;
      bitField0_ |= 0x00020000;
      onChanged();
      return this;
    }
    /**
     * <code>uint64 priority = 18;</code>
     * @return This builder for chaining.
     */
    public Builder clearPriority() {
      bitField0_ = (bitField0_ & ~0x00020000);
      priority_ = 0L;
      onChanged();
      return this;
    }

    private long maxWaitTime_ ;
    /**
     * <code>uint64 maxWaitTime = 19;</code>
     * @return The maxWaitTime.
     */
    @Override
    public long getMaxWaitTime() {
      return maxWaitTime_;
    }
    /**
     * <code>uint64 maxWaitTime = 19;</code>
     * @param value The maxWaitTime to set.
     * @return This builder for chaining.
     */
    public Builder setMaxWaitTime(long value) {

      maxWaitTime_ = value;
      bitField0_ |= 0x00040000;
      onChanged();
      return this;
    }
    /**
     * <code>uint64 maxWaitTime = 19;</code>
     * @return This builder for chaining.
     */
    public Builder clearMaxWaitTime() {
      bitField0_ = (bitField0_ & ~0x00040000);
      maxWaitTime_ = 0L;
      onChanged();
      return this;
    }

    private Object dressId_ = "";
    /**
     * <code>string dressId = 20;</code>
     * @return The dressId.
     */
    public String getDressId() {
      Object ref = dressId_;
      if (!(ref instanceof String)) {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        dressId_ = s;
        return s;
      } else {
        return (String) ref;
      }
    }
    /**
     * <code>string dressId = 20;</code>
     * @return The bytes for dressId.
     */
    public com.google.protobuf.ByteString
        getDressIdBytes() {
      Object ref = dressId_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        dressId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     * <code>string dressId = 20;</code>
     * @param value The dressId to set.
     * @return This builder for chaining.
     */
    public Builder setDressId(
        String value) {
      if (value == null) { throw new NullPointerException(); }
      dressId_ = value;
      bitField0_ |= 0x00080000;
      onChanged();
      return this;
    }
    /**
     * <code>string dressId = 20;</code>
     * @return This builder for chaining.
     */
    public Builder clearDressId() {
      dressId_ = getDefaultInstance().getDressId();
      bitField0_ = (bitField0_ & ~0x00080000);
      onChanged();
      return this;
    }
    /**
     * <code>string dressId = 20;</code>
     * @param value The bytes for dressId to set.
     * @return This builder for chaining.
     */
    public Builder setDressIdBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) { throw new NullPointerException(); }
      checkByteStringIsUtf8(value);
      dressId_ = value;
      bitField0_ |= 0x00080000;
      onChanged();
      return this;
    }

    private long alignment_ ;
    /**
     * <code>uint64 alignment = 21;</code>
     * @return The alignment.
     */
    @Override
    public long getAlignment() {
      return alignment_;
    }
    /**
     * <code>uint64 alignment = 21;</code>
     * @param value The alignment to set.
     * @return This builder for chaining.
     */
    public Builder setAlignment(long value) {

      alignment_ = value;
      bitField0_ |= 0x00100000;
      onChanged();
      return this;
    }
    /**
     * <code>uint64 alignment = 21;</code>
     * @return This builder for chaining.
     */
    public Builder clearAlignment() {
      bitField0_ = (bitField0_ & ~0x00100000);
      alignment_ = 0L;
      onChanged();
      return this;
    }

    private long alignmentOffset_ ;
    /**
     * <code>uint64 alignmentOffset = 22;</code>
     * @return The alignmentOffset.
     */
    @Override
    public long getAlignmentOffset() {
      return alignmentOffset_;
    }
    /**
     * <code>uint64 alignmentOffset = 22;</code>
     * @param value The alignmentOffset to set.
     * @return This builder for chaining.
     */
    public Builder setAlignmentOffset(long value) {

      alignmentOffset_ = value;
      bitField0_ |= 0x00200000;
      onChanged();
      return this;
    }
    /**
     * <code>uint64 alignmentOffset = 22;</code>
     * @return This builder for chaining.
     */
    public Builder clearAlignmentOffset() {
      bitField0_ = (bitField0_ & ~0x00200000);
      alignmentOffset_ = 0L;
      onChanged();
      return this;
    }
    @Override
    public final Builder setUnknownFields(
        final com.google.protobuf.UnknownFieldSet unknownFields) {
      return super.setUnknownFields(unknownFields);
    }

    @Override
    public final Builder mergeUnknownFields(
        final com.google.protobuf.UnknownFieldSet unknownFields) {
      return super.mergeUnknownFields(unknownFields);
    }


    // @@protoc_insertion_point(builder_scope:EffectConfig)
  }

  // @@protoc_insertion_point(class_scope:EffectConfig)
  private static final EffectConfig DEFAULT_INSTANCE;
  static {
    DEFAULT_INSTANCE = new EffectConfig();
  }

  public static EffectConfig getDefaultInstance() {
    return DEFAULT_INSTANCE;
  }

  private static final com.google.protobuf.Parser<EffectConfig>
      PARSER = new com.google.protobuf.AbstractParser<EffectConfig>() {
    @Override
    public EffectConfig parsePartialFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      Builder builder = newBuilder();
      try {
        builder.mergeFrom(input, extensionRegistry);
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(builder.buildPartial());
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(e)
            .setUnfinishedMessage(builder.buildPartial());
      }
      return builder.buildPartial();
    }
  };

  public static com.google.protobuf.Parser<EffectConfig> parser() {
    return PARSER;
  }

  @Override
  public com.google.protobuf.Parser<EffectConfig> getParserForType() {
    return PARSER;
  }

  @Override
  public EffectConfig getDefaultInstanceForType() {
    return DEFAULT_INSTANCE;
  }

}

